home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / probots.arc / ABASIRI.PR next >
Text File  |  1991-04-28  |  2KB  |  73 lines

  1.  
  2.   PROCEDURE Abasiri;
  3.  
  4. {
  5.   Based on C-Robot by Hortense Endoh
  6. }
  7.  
  8.   VAR dir, deg, Range, spd : Integer;
  9.  
  10.     PROCEDURE shoot;
  11.     BEGIN
  12.       IF speed = 0 THEN {i.e., stopped -- probably ran into something}
  13.         BEGIN
  14.           dir := dir+90+Random(180); {go at random in opposite direction}
  15.           spd := 100;
  16.         END;
  17.       drive(dir, spd);
  18.       Range := scan(deg, 10);
  19.       IF (Range > 40) THEN cannon(deg, Range)
  20.       ELSE BEGIN
  21.         deg := deg+20;
  22.         Range := scan(deg, 10);
  23.         IF Range = 0 THEN
  24.           BEGIN
  25.             deg := deg-40;
  26.             Range := scan(deg, 10);
  27.             IF Range = 0 THEN
  28.               BEGIN
  29.                 deg := deg+60;
  30.                 Range := scan(deg, 10);
  31.                 WHILE Range = 0 DO
  32.                   BEGIN
  33.                     deg := deg+20;
  34.                     Range := scan(deg, 10);
  35.                   END;
  36.               END;
  37.           END;
  38.         IF (Range > 40) THEN cannon(deg, Range);
  39.       END;
  40.     END;
  41.  
  42.     PROCEDURE init_proc;
  43.     BEGIN
  44.       dir := 270; spd := 100; WHILE (loc_y > 200) DO shoot;
  45.       dir := 90; shoot; shoot; shoot;
  46.       dir := 180; WHILE (loc_x > 600) DO shoot;
  47.       spd := 50; dir := 0; WHILE (loc_x < 750) DO shoot;
  48.       deg := 90;
  49.     END;
  50.  
  51.   BEGIN {Main Abasiri}
  52.  
  53.     init_proc;
  54.  
  55.     REPEAT
  56.       spd := 100; dir := 45; WHILE (loc_x < 800) DO shoot; dir := 225; shoot;
  57.       spd := 100; dir := 135; WHILE (loc_x > 750) DO shoot; dir := 315; shoot;
  58.       spd := 100; dir := 45; WHILE (loc_x < 800) DO shoot; dir := 225; shoot;
  59.       spd := 100; dir := 135; WHILE (loc_y < 800) DO shoot; dir := 315; shoot;
  60.       spd := 100; dir := 225; WHILE (loc_y > 750) DO shoot; dir := 45; shoot;
  61.       spd := 100; dir := 135; WHILE (loc_y < 800) DO shoot; dir := 315; shoot;
  62.       spd := 100; dir := 225; WHILE (loc_x > 200) DO shoot; dir := 45; shoot;
  63.       spd := 100; dir := 315; WHILE (loc_x < 250) DO shoot; dir := 135; shoot;
  64.       spd := 100; dir := 225; WHILE (loc_x > 200) DO shoot; dir := 45; shoot;
  65.       spd := 100; dir := 315; WHILE (loc_y > 200) DO shoot; dir := 135; shoot;
  66.       spd := 100; dir := 45; WHILE (loc_y < 250) DO shoot; dir := 225; shoot;
  67.       spd := 100; dir := 315; WHILE (loc_y > 200) DO shoot; dir := 135; shoot;
  68.  
  69.     UNTIL Dead OR Winner;
  70.  
  71.   END; { end of ABASIRI main }
  72.  
  73.